import os
import pandas as pd
import tensorflow
from keras.preprocessing import image
import numpy as np
import matplotlib.pyplot as plt
import cv2
from pathlib import Path
from keras.models import Sequential
from keras.layers import Dropout
from keras.layers import Conv2D
def draw_image(img):
plt.imshow(img,cmap='gray')
plt.show()
p = Path("Desktop/SRIB/img")
images = []
masks = []
cnt = 0
for i in sorted(p.glob("*.jpg")):
string = str(i)
img = cv2.imread(string)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.resize(img,(256,256))
images.append(img)
cnt += 1
print(cnt)
cnt1 = 0
for i in sorted(p.glob("*.png")):
string = str(i)
img = cv2.imread(string)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.resize(img,(244,244))
masks.append(img)
cnt1 += 1
print(cnt1)
p = Path("Desktop/SRIB/ShadowImages")
cnt = 0
for i in sorted(p.glob("*.jpg")):
string = str(i)
img = cv2.imread(string)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.resize(img,(256,256))
images.append(img)
cnt += 1
print(cnt)
p = Path("Desktop/SRIB/ShadowMasks")
cnt1 = 0
for i in sorted(p.glob("*.png")):
string = str(i)
img = cv2.imread(string)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.resize(img,(244,244))
masks.append(img)
cnt1 += 1
print(cnt1)
X = np.array(images)/255.0
Y = np.array(masks)/244.0
X_ = np.expand_dims(X, axis=3)
Y_ = np.expand_dims(Y, axis=3)
print(X.shape)
print(Y.shape)
print(X_.shape)
print(Y_.shape)
draw_image(X[0])
draw_image(Y[0])
draw_image(X[445])
draw_image(Y[445])
model = Sequential()
model.add(Conv2D(32, (5,5), activation='relu', input_shape=(256, 256,1)))
model.add(Conv2D(32, (5,5), activation='relu'))
model.add(Dropout(0.2))
model.add(Conv2D(1, (5,5)))
model.compile(optimizer='sgd', loss='binary_crossentropy')
model.fit(X_, Y_, epochs=5)
test = []
original = []
p1 = Path("Desktop/img")
cnt = 0
for i in sorted(p1.glob("*.jpg")):
if cnt > 20:
break
string = str(i)
img = cv2.imread(string)
img = cv2.resize(img,(256,256))
original.append(img)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
test.append(img)
cnt += 1
X_test = np.array(test)/255.0
X_test = np.expand_dims(X_test, axis=3)
print(X_test.shape)
Y_test = model.predict(X_test)*244
Y_test = np.squeeze(Y_test, axis=3)
print(Y_test.shape)
print(type(Y_test))
for i in range(21):
draw_image(original[i])
draw_image(Y_test[i])